package com.huanmeiqi.demo.quartz.demo01;

import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author cq.Wang
 * @date 2018/6/13 16:13
 * @description
 */
@Configuration
public class MyJobConfig {

    /**
     * 注入JobDetail
     *
     * @return
     */
    @Bean
    public JobDetail myJobDetail() {
        return JobBuilder.newJob(MyJob.class) //创建自定义任务内容
                .withIdentity("myJob") //给Job取名
                .usingJobData("name", "换煤气") //有需要的话可以向Job发送数据,在自定义的Job类中只需要创建该属性及对应的setXX方法即可接收
                .storeDurably().build();
    }

    /**
     * 给JobDetail配置触发器
     *
     * @return
     */
//    @Bean
    public Trigger myJobTrigger() {
        // 简单触发器，2秒执行一次
//        return TriggerBuilder.newTrigger().forJob(myJobDetail())
//                .withIdentity("myTrigger")
//                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever())
//                .build();

        // Cron触发器，2秒执行一次
        return TriggerBuilder.newTrigger().forJob(myJobDetail()).withIdentity("myJobTrigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
    }

    /**
     * 定义调度工厂
     *
     * @return
     */
//    @Bean
//    public SchedulerFactoryBean schedulerFactoryBean() {
//        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
//        // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job
////        schedulerFactoryBean.setOverwriteExistingJobs(true);
//        // 延时启动，应用启动10秒后
////        schedulerFactoryBean.setStartupDelay(10);
//        // 注册触发器
////        schedulerFactoryBean.setTriggers(myJobTrigger());
//        return schedulerFactoryBean;
//
//    }

}
